Author
Affiliation
Magnus Johansson
Published

February 2, 2023

2.1 Frågor i enkäten

Item/frågor har etiketter f66a-f66u i datafilen, och motsvaras av fråga 67 i PDF-filen med frågor.

“Hur väl stämmer följande påståenden in på dig som person?” följs av de ingående frågorna, alla med samma fyra svarskategorier:

  • ‘Stämmer mycket dåligt’
  • ‘Stämmer ganska dåligt’
  • ‘Stämmer ganska bra’
  • ‘Stämmer mycket bra’

Svarskategorierna ersätts med siffror från 0 till 3, och för f66h, m, p och u är siffrorna omvända/reverserade, d.v.s. att “Stämmer mycket bra” kodas som “0” i stället för “3” till analysen. Det innebär att höga poäng genomgående innebär hög risk.

Code
#RIcolorlistitems(c(8,13,16,21), RISEprimGreenMid)
reverserade <- c(8,13,16,21)
itemlabels %>% 
  kbl(booktabs = T, escape = F) %>%
      # bootstrap options are for HTML output
      kable_styling(bootstrap_options = c("striped", "hover"), 
                    position = "left",
                    full_width = F,
                    font_size = 14,
                    fixed_thead = T) %>% # when there is a long list in the table
      row_spec(reverserade, bold = F, color = "white", background = RISEprimGreen) %>% 
      column_spec(1, bold = T) %>% 
      kable_classic(html_font = "Lato")
itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66b Jag gillar att göra spännande och farliga saker, även om det är förbjudet.
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66p Det är fel att fuska i skolan.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
f66s Om jag ställs inför en svår uppgift så väljer jag att göra något annat.
f66t Den som gör mig arg ger jag mig på, även om han/hon inte slagit mig först.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.

2.2 Deskriptiva data

2.2.1 Demografi

Code
RIdemographics(dif.gender, "Kön")
RIdemographics(dif.arskurs, "Årskurs")
Kön n Percent
Flicka 4327 54.1
Pojke 3670 45.9
Årskurs n Percent
Åk 9 3506 43.8
Gy 2 4491 56.2

2.2.2 Item-data

Code
RItileplot(df.omit.na)

Code
RIbarstack(df.omit.na)

Code
RIbarplot(df.omit.na)

2.3 Rasch-analys samtliga items

itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66b Jag gillar att göra spännande och farliga saker, även om det är förbjudet.
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66p Det är fel att fuska i skolan.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
f66s Om jag ställs inför en svår uppgift så väljer jag att göra något annat.
f66t Den som gör mig arg ger jag mig på, även om han/hon inte slagit mig först.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
RIitemfitPCM2(df.omit.na, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66a 0.759 0.791 -2.683 -2.48
f66b 0.696 0.709 -4.173 -4.336
f66c 0.852 0.855 -1.622 -1.914
f66d 0.784 0.805 -2.786 -2.633
f66e 1.515 1.17 4.292 1.826
f66f 0.972 0.966 -0.359 -0.351
f66g 0.695 0.722 -3.914 -3.683
f66h 1.47 1.367 5.252 4.399
f66i 1.011 1.004 0.193 0.034
f66j 0.947 0.95 -0.777 -0.652
f66k 1.036 1.013 0.564 0.395
f66l 1.24 1.214 3.031 2.551
f66m 1.299 1.213 3.443 2.694
f66n 0.723 0.737 -3.754 -3.823
f66o 0.743 0.783 -2.671 -2.743
f66p 1.231 1.098 1.76 1.252
f66q 0.821 0.882 -1.215 -0.877
f66r 0.929 0.933 -0.936 -1.07
f66s 0.97 0.971 -0.547 -0.643
f66t 0.774 0.838 -1.625 -1.451
f66u 1.262 1.203 2.836 2.587
Code
RIpcmPCA(df.omit.na)
PCA of Rasch model residuals
Eigenvalues
2.54
1.85
1.65
1.42
1.31
Code
RIloadLoc(df.omit.na)

Code
RIresidcorr(df.omit.na, cutoff = 0.2)
f66a f66b f66c f66d f66e f66f f66g f66h f66i f66j f66k f66l f66m f66n f66o f66p f66q f66r f66s f66t f66u
f66a
f66b 0.1
f66c 0.09 -0.02
f66d 0.06 -0.01 -0.02
f66e -0.08 -0.14 0.12 -0.1
f66f -0.09 0.18 -0.15 -0.1 -0.13
f66g 0.09 0.26 -0.05 0.07 -0.14 0.2
f66h -0.15 -0.25 -0.09 -0.13 -0.01 -0.11 -0.24
f66i -0.03 0.06 -0.02 -0.13 -0.06 0.05 -0.01 -0.26
f66j -0.07 0.17 -0.08 -0.09 -0.06 0.11 0.01 -0.22 0.2
f66k 0 -0.02 -0.03 0.1 -0.04 -0.06 -0.01 -0.25 0.04 0.11
f66l -0.1 -0.22 -0.09 -0.06 -0.02 -0.15 -0.19 0.14 -0.1 -0.07 -0.13
f66m -0.08 -0.15 -0.08 -0.12 -0.08 -0.09 -0.16 0.12 -0.02 -0.16 -0.16 -0.12
f66n -0.02 0.41 -0.03 -0.04 -0.13 0.15 0.2 -0.22 0.04 0.11 -0.02 -0.18 -0.18
f66o 0.23 0.01 0.07 0.04 -0.03 -0.12 0.03 -0.19 -0.03 -0.03 0.09 -0.09 -0.11 0.08
f66p -0.08 -0.09 -0.12 0.01 -0.11 -0.09 -0.07 0.13 -0.17 -0.16 -0.09 -0.1 0.06 -0.12 -0.12
f66q 0 -0.04 -0.02 0.05 -0.03 -0.08 0.07 -0.11 -0.11 -0.12 -0.02 -0.06 -0.1 -0.02 0.06 -0.01
f66r -0.05 -0.01 -0.06 -0.05 -0.14 -0.05 -0.04 -0.1 0.08 0.05 -0.1 0.01 0.07 0.08 -0.03 -0.18 -0.04
f66s -0.03 -0.17 -0.08 0.04 -0.09 -0.12 -0.1 0.19 -0.15 -0.14 -0.15 0.26 -0.07 -0.14 -0.07 -0.08 -0.01 0.05
f66t 0.05 -0.06 0.34 -0.06 0.14 -0.12 0 -0.11 -0.05 -0.11 -0.03 -0.09 -0.08 -0.03 0.12 -0.1 0.1 -0.09 -0.02
f66u -0.09 -0.11 -0.21 0.07 -0.18 -0.07 0 0.07 -0.16 -0.17 -0.08 -0.05 0.08 -0.13 -0.17 0.19 0 -0.13 -0.05 -0.19
Note:
Relative cut-off value (highlighted in red) is 0.161, which is 0.2 above the average correlation.
Code
RItargeting(df.omit.na)

Code
RIitemHierarchy(df.omit.na)

Code
plot(mirt.rasch, type="trace")

Vi ser att PCA av residualer indikerar multidimensionalitet eftersom största eigenvalue är över 2.0. Figuren med “Loadings 1st contrast” visar att våra reverserade items, h m p och u, håller ihop i ett kluster, och även items s och l ligger nära dem.

Som ett första steg provar vi att plocka bort ovan nämnda sex items och köra analysen igen.

2.4 Rasch-analys 1 negativa items

Utan items f66h m p u samt l och s.

Code
items.pos <- c("f66h","f66l","f66m","f66p","f66s","f66u")

df.neg <- df.omit.na %>% 
  select(!any_of(items.pos))
itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66b Jag gillar att göra spännande och farliga saker, även om det är förbjudet.
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
f66t Den som gör mig arg ger jag mig på, även om han/hon inte slagit mig först.
Code
RIitemfitPCM2(df.neg, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66a 0.846 0.856 -1.748 -1.595
f66b 0.704 0.708 -3.691 -4.362
f66c 0.954 0.918 -0.404 -0.855
f66d 0.957 0.94 -0.763 -0.803
f66e 1.836 1.331 4.781 3.602
f66f 1.103 1.065 1.338 0.754
f66g 0.719 0.748 -3.096 -3.258
f66i 1.083 1.072 1.139 1.126
f66j 0.998 0.992 0.047 -0.041
f66k 1.093 1.079 1.478 0.581
f66n 0.72 0.743 -3.507 -3.827
f66o 0.775 0.817 -2.212 -2.175
f66q 1.025 0.993 0.16 0.114
f66r 1.108 1.1 1.4 1.273
f66t 0.88 0.892 -0.625 -0.923
Code
RIpcmPCA(df.neg)
PCA of Rasch model residuals
Eigenvalues
2.02
1.54
1.36
1.20
1.15
Code
RIloadLoc(df.neg)

Code
RIresidcorr(df.neg, cutoff = 0.2)
f66a f66b f66c f66d f66e f66f f66g f66i f66j f66k f66n f66o f66q f66r f66t
f66a
f66b 0.01
f66c 0.03 -0.14
f66d 0.02 -0.08 -0.06
f66e -0.12 -0.23 0.08 -0.11
f66f -0.16 0.09 -0.22 -0.13 -0.17
f66g 0.01 0.16 -0.15 0.02 -0.21 0.13
f66i -0.1 -0.05 -0.1 -0.19 -0.12 -0.02 -0.11
f66j -0.14 0.07 -0.16 -0.15 -0.12 0.04 -0.08 0.12
f66k -0.07 -0.14 -0.11 0.05 -0.09 -0.14 -0.1 -0.05 0.01
f66n -0.12 0.32 -0.14 -0.12 -0.21 0.07 0.1 -0.07 0 -0.13
f66o 0.16 -0.12 -0.02 -0.01 -0.08 -0.21 -0.08 -0.12 -0.12 0.01 -0.04
f66q -0.04 -0.11 -0.07 0.04 -0.05 -0.12 0.01 -0.15 -0.17 -0.06 -0.08 0.01
f66r -0.09 -0.09 -0.1 -0.06 -0.16 -0.08 -0.09 0.02 -0.02 -0.16 0.02 -0.08 -0.05
f66t -0.02 -0.16 0.29 -0.1 0.11 -0.18 -0.09 -0.12 -0.18 -0.1 -0.13 0.05 0.06 -0.12
Note:
Relative cut-off value (highlighted in red) is 0.14, which is 0.2 above the average correlation.
Code
RItargeting(df.neg)

Code
RIitemHierarchy(df.neg)

Code
plot(mirt.rasch, type="trace")

Vi ser nu att f66e, som även tidigare hade hög MSQ, också sticker ut i loading-figuren. Det är också det enda item som har problem med svarskategorierna. Vi provar att slå samman svarskategorierna i mitten och tittar sedan på item fit igen.

2.4.1 Omkodning av svarskategorier för f66e

Code
#recoded.items <- c("f66e","f66p","f66q","f66t")
df.neg$f66e<-car::recode(df.neg$f66e,"2=1;3=2",as.factor=FALSE)

df.erm <- PCM(df.neg)
plotICC(df.erm, item.subset = "f66e")

itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66b Jag gillar att göra spännande och farliga saker, även om det är förbjudet.
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
f66t Den som gör mig arg ger jag mig på, även om han/hon inte slagit mig först.

2.5 Rasch-analys 2 negativa items

Code
RIitemfitPCM2(df.neg, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66a 0.859 0.865 -1.418 -1.372
f66b 0.704 0.708 -4.013 -4.092
f66c 0.985 0.945 0.144 -0.349
f66d 0.973 0.954 -0.225 -0.522
f66e 1.309 1.115 2.807 1.203
f66f 1.123 1.083 1.212 1.087
f66g 0.721 0.75 -3.107 -3.229
f66i 1.101 1.089 1.179 1.091
f66j 1.01 1.002 0.067 -0.185
f66k 1.113 1.099 1.571 1.151
f66n 0.722 0.745 -3.746 -3.907
f66o 0.79 0.83 -1.741 -1.911
f66q 1.059 1.013 0.412 -0.159
f66r 1.121 1.113 1.381 1.319
f66t 0.919 0.918 -0.268 -0.468
Code
RIpcmPCA(df.neg)
PCA of Rasch model residuals
Eigenvalues
2.03
1.52
1.37
1.18
1.16
Code
RIloadLoc(df.neg)

Code
RIresidcorr(df.neg, cutoff = 0.2)
f66a f66b f66c f66d f66e f66f f66g f66i f66j f66k f66n f66o f66q f66r f66t
f66a
f66b -0.01
f66c 0.02 -0.15
f66d 0.01 -0.1 -0.06
f66e -0.06 -0.16 0.14 -0.07
f66f -0.17 0.08 -0.22 -0.14 -0.15
f66g 0 0.14 -0.16 0 -0.15 0.12
f66i -0.11 -0.06 -0.1 -0.2 -0.1 -0.03 -0.12
f66j -0.15 0.06 -0.17 -0.16 -0.1 0.03 -0.09 0.11
f66k -0.07 -0.16 -0.11 0.05 -0.08 -0.14 -0.12 -0.05 0.01
f66n -0.14 0.3 -0.15 -0.13 -0.15 0.05 0.08 -0.09 -0.01 -0.15
f66o 0.15 -0.14 -0.02 -0.02 -0.03 -0.22 -0.09 -0.12 -0.13 0 -0.05
f66q -0.05 -0.12 -0.07 0.04 -0.02 -0.12 0 -0.16 -0.18 -0.06 -0.09 0
f66r -0.09 -0.1 -0.1 -0.07 -0.14 -0.09 -0.1 0.02 -0.03 -0.16 0.01 -0.09 -0.06
f66t -0.02 -0.17 0.3 -0.1 0.16 -0.18 -0.1 -0.12 -0.18 -0.1 -0.13 0.05 0.06 -0.13
Note:
Relative cut-off value (highlighted in red) is 0.138, which is 0.2 above the average correlation.
Code
RItargeting(df.neg)

Code
RIitemHierarchy(df.neg)

Items f66b och n, samt c och t, har störst residualkorrelationer och behöver åtgärdas genom att en i varje par tas bort.

  • b har två korrelationer, samt lägre fit
  • t har sämst targeting

2.6 Rasch-analys 3 negativa items

Utan items f66b och t.

Code
removed.items <- c("f66b","f66t")

df.neg <- df.neg %>% 
  select(!any_of(removed.items))
itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
RIitemfitPCM2(df.neg, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66a 0.837 0.843 -1.519 -1.948
f66c 0.985 0.946 -0.253 -0.738
f66d 0.925 0.909 -0.834 -1.143
f66e 1.264 1.098 1.981 1.171
f66f 1.084 1.051 1.111 0.642
f66g 0.71 0.738 -3.198 -3.523
f66i 1.054 1.044 1.182 1.027
f66j 0.975 0.97 -0.471 -0.411
f66k 1.05 1.042 0.512 0.781
f66n 0.731 0.752 -3.731 -3.803
f66o 0.751 0.799 -2.444 -2.776
f66q 1.009 0.984 0.335 -0.141
f66r 1.068 1.059 0.828 0.757
Code
RIpcmPCA(df.neg)
PCA of Rasch model residuals
Eigenvalues
1.76
1.45
1.26
1.18
1.14
Code
RIloadLoc(df.neg)

Code
RIresidcorr(df.neg, cutoff = 0.2)
f66a f66c f66d f66e f66f f66g f66i f66j f66k f66n f66o f66q f66r
f66a
f66c 0.04
f66d 0.01 -0.06
f66e -0.06 0.15 -0.07
f66f -0.17 -0.21 -0.15 -0.15
f66g 0.01 -0.13 0 -0.14 0.13
f66i -0.11 -0.1 -0.22 -0.1 -0.04 -0.12
f66j -0.15 -0.16 -0.17 -0.1 0.03 -0.09 0.1
f66k -0.08 -0.11 0.03 -0.09 -0.16 -0.12 -0.07 0
f66n -0.12 -0.11 -0.13 -0.14 0.07 0.1 -0.08 0.01 -0.14
f66o 0.15 -0.01 -0.03 -0.02 -0.23 -0.09 -0.14 -0.13 -0.01 -0.03
f66q -0.05 -0.06 0.03 -0.02 -0.12 0.01 -0.17 -0.18 -0.07 -0.08 0
f66r -0.1 -0.1 -0.09 -0.15 -0.1 -0.11 0 -0.04 -0.19 0.01 -0.1 -0.07
Note:
Relative cut-off value (highlighted in red) is 0.13, which is 0.2 above the average correlation.
Code
RItargeting(df.neg)

Code
RIitemHierarchy(df.neg)

Vi har några residualkorrelationer som är strax över gränsvärden, men i stort fungerar denna uppsättning items acceptabelt.

2.6.1 Reliabilitet

Code
RItif(df.neg)

Reliabiliteten är god och det finns utrymme att minska på antalet items för att åtgärda de smärre brister som kvarstår.

2.7 Rasch-analys 4 negativa items

Två par av items har residualkorrelationer som överstiger gränsvärdet:

  • f66a med o (provocerar)
  • f66c med e (våldsutövning vid affekt)

Tittar man på innehållet i frågorna är det inte förvånande att se dessa korrelationer eftersom de är såpass likartade. Det gör också att det är rimligt att eliminera frågor utan att tappa innehållsvaliditet.

Vi tar bort:

  • f66a (o har marginellt bättre targeting)
  • f66e (hade problem med svarskategorier)
Code
removed.items <- c("f66b","f66t","f66a","f66e")

df.neg <- df.neg %>% 
  select(!any_of(removed.items))
itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
RIitemfitPCM2(df.neg, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66c 1.047 0.992 0.64 -0.213
f66d 0.936 0.913 -0.758 -1.024
f66f 1.047 1.013 0.309 0.304
f66g 0.7 0.729 -3.626 -3.685
f66i 1.036 1.026 0.804 0.155
f66j 0.946 0.943 -0.63 -0.694
f66k 1.038 1.031 0.166 0.65
f66n 0.708 0.726 -3.865 -3.899
f66o 0.789 0.83 -1.852 -2.02
f66q 1.024 0.984 0.092 -0.383
f66r 1.043 1.035 0.614 0.41
Code
RIpcmPCA(df.neg)
PCA of Rasch model residuals
Eigenvalues
1.64
1.45
1.25
1.11
1.06
Code
RIloadLoc(df.neg)

Code
RIresidcorr(df.neg, cutoff = 0.2)
f66c f66d f66f f66g f66i f66j f66k f66n f66o f66q f66r
f66c
f66d -0.04
f66f -0.21 -0.18
f66g -0.12 0 0.11
f66i -0.09 -0.23 -0.07 -0.14
f66j -0.16 -0.19 0 -0.11 0.08
f66k -0.1 0.02 -0.19 -0.13 -0.09 -0.02
f66n -0.11 -0.14 0.03 0.09 -0.11 -0.02 -0.17
f66o 0.02 -0.01 -0.23 -0.08 -0.13 -0.14 -0.01 -0.03
f66q -0.04 0.03 -0.14 0 -0.18 -0.19 -0.08 -0.09 0.01
f66r -0.1 -0.1 -0.14 -0.13 -0.02 -0.07 -0.22 -0.02 -0.1 -0.08
Note:
Relative cut-off value (highlighted in red) is 0.117, which is 0.2 above the average correlation.
Code
RItargeting(df.neg)

Code
RIitemHierarchy(df.neg)

Code
plot(mirt.rasch, type="trace")

Code
RItif(df.neg)

Code
RIlistitems(df.neg)
itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.

Detta är sannolikt den optimala uppsättningen items, även om f66g och n uppvisar något låg item fit ZSTD.

Vi kan gå vidare och undersöka ytterligare item-reduktion, men först tittar vi på DIF.

2.8 Invarians/DIF - negativa items

2.8.1 Kön

itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
#dif.gender<-recode(dif.gender,"'Pojke'=1;'Flicka'=2",as.factor=FALSE)
RIdifTable(df.neg, dif.gender)

Item 2 3 Mean location StDev MaxDiff
f66c 0.507 0.372 0.440 0.095 0.135
f66d 0.322 0.164 0.243 0.111 0.157
f66f -0.015 0.185 0.085 0.141 0.200
f66g 0.601 0.539 0.570 0.044 0.062
f66i -0.640 -0.286 -0.463 0.250 0.353
f66j -1.617 -1.400 -1.508 0.153 0.217
f66k -0.181 -0.387 -0.284 0.146 0.206
f66n 0.142 -0.005 0.069 0.104 0.148
f66o 0.661 0.403 0.532 0.182 0.258
f66q 1.149 0.962 1.055 0.132 0.187
f66r -0.929 -0.546 -0.738 0.271 0.383
Code
RIdifFigure(df.neg, dif.gender)

Inga större problem. Två item går över 0.3 - f66r och f66i, men ingen över 0.5.

2.8.2 Årskurs

itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
RIdifTable(df.neg, dif.arskurs)

Item 2 3 Mean location StDev MaxDiff
f66c 0.297 0.581 0.439 0.201 0.284
f66d 0.201 0.286 0.244 0.060 0.085
f66f 0.301 -0.089 0.106 0.275 0.389
f66g 0.595 0.550 0.573 0.032 0.045
f66i -0.309 -0.613 -0.461 0.215 0.304
f66j -1.481 -1.553 -1.517 0.050 0.071
f66k -0.289 -0.258 -0.274 0.022 0.032
f66n 0.052 0.094 0.073 0.029 0.041
f66o 0.487 0.564 0.526 0.055 0.077
f66q 0.922 1.172 1.047 0.177 0.250
f66r -0.776 -0.735 -0.755 0.029 0.041
Code
RIdifFigure(df.neg, dif.arskurs)

Inga problem. Item f66f är den som har högst nivå.

2.8.3 Årtal

Code
RIlistItemsMargin(df.neg)
itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66i Jag ser mig själv som en ganska impulsiv person.
f66j Jag vill gärna vara där det händer spännande saker.
f66k Jag kan få andra att tro på nästan vad som helst.
f66n Jag gör dumma saker även om de är lite farliga.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
final.items.neg <- names(df.neg)
#write.csv(final.items, file = "2022-09-16 IFoptimalItems.csv")
df.dif.years.neg <- df.dif.years %>% 
  select(any_of(final.items.neg))

# recoded.items <- c("f66e","f66p","f66q","f66t")
# 
# for (i in recoded.items) {
#   df.omit.na[[i]]<-car::recode(df.omit.na[[i]],"2=1;3=2",as.factor=FALSE)
# }

RIdifTable(df.dif.years.neg, dif.year)

Item 4 5 7 8 11 13 14 15 Mean location StDev MaxDiff
f66c 0.441 0.522 0.520 0.478 0.448 0.446 0.403 0.443 0.462 0.041 0.119
f66d 0.444 0.390 0.377 0.357 0.248 0.275 0.249 0.247 0.323 0.078 0.197
f66f -0.041 -0.084 -0.057 -0.001 0.081 0.120 0.102 0.059 0.022 0.078 0.204
f66g 0.562 0.582 0.546 0.553 0.572 0.513 0.552 0.570 0.556 0.021 0.069
f66i -0.694 -0.662 -0.616 -0.543 -0.472 -0.440 -0.443 -0.409 -0.535 0.111 0.285
f66j -1.604 -1.558 -1.588 -1.602 -1.513 -1.456 -1.403 -1.443 -1.521 0.079 0.201
f66k -0.107 -0.135 -0.177 -0.211 -0.268 -0.359 -0.321 -0.215 -0.224 0.087 0.252
f66n 0.181 0.121 0.101 0.092 0.076 0.078 0.075 0.028 0.094 0.044 0.153
f66o 0.565 0.548 0.542 0.518 0.531 0.484 0.488 0.559 0.529 0.031 0.081
f66q 0.892 0.947 1.030 1.076 1.045 1.005 1.009 0.950 0.994 0.061 0.184
f66r -0.638 -0.670 -0.677 -0.716 -0.748 -0.666 -0.710 -0.788 -0.702 0.049 0.150
Code
RIdifFigure(df.dif.years.neg, dif.year)

Code
RIdifFigTime(df.dif.years.neg, dif.year)

Inget item är problematiskt.

2.9 Person fit negativa items

Code
RIpfit(df.neg)

2.10 Item-parametrar negativa items

Code
RIitemparams(df.dif.years.neg, "IFnegativaItems.csv")
Threshold 1 Threshold 2 Threshold 3 Item location
f66c 0.07 0.91 1.48 0.82
f66d -0.41 0.71 1.76 0.69
f66f -0.33 0.28 1.13 0.36
f66g -0.22 1.10 1.84 0.91
f66i -1.72 -0.22 1.41 -0.18
f66j -2.45 -1.50 0.47 -1.16
f66k -1.28 0.29 1.41 0.14
f66n -0.71 0.42 1.64 0.45
f66o 0.15 0.91 1.59 0.88
f66q 0.83 1.55 1.64 1.34
f66r -1.83 -0.43 1.23 -0.34
Code
itemlabels %>% 
  filter(itemnr %in% names(df.dif.years.neg)) %>% 
  write_csv("IFnegItemnr.csv")
Code
RIscoreSE(df.dif.years.neg)
Ordinal sum score Logit score Logit std.error
0 -4.34 NA
1 -3.50 1.04
2 -2.73 0.76
3 -2.25 0.64
4 -1.88 0.58
5 -1.57 0.53
6 -1.31 0.50
7 -1.07 0.47
8 -0.86 0.45
9 -0.67 0.43
10 -0.49 0.41
11 -0.33 0.40
12 -0.17 0.39
13 -0.02 0.38
14 0.12 0.38
15 0.26 0.37
16 0.40 0.37
17 0.53 0.36
18 0.66 0.36
19 0.79 0.36
20 0.92 0.36
21 1.05 0.36
22 1.19 0.37
23 1.32 0.38
24 1.47 0.39
25 1.62 0.40
26 1.79 0.42
27 1.97 0.44
28 2.18 0.47
29 2.43 0.52
30 2.73 0.59
31 3.15 0.72
32 3.86 1.01
33 4.64 NA

2.11 Rasch-analys 1 positiva items

Code
items.pos <- c("f66h","f66l","f66m","f66p","f66s","f66u")

df.pos <- df.omit.na %>% 
  select(any_of(items.pos))
Code
RIlistItemsMargin(df.pos, 13)
itemnr item
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66p Det är fel att fuska i skolan.
f66s Om jag ställs inför en svår uppgift så väljer jag att göra något annat.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
RIitemfitPCM2(df.pos, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66h 0.835 0.827 -2.281 -2.565
f66l 0.974 0.97 -0.541 -0.62
f66m 0.999 0.974 0.151 -0.519
f66p 0.821 0.819 -1.724 -2.264
f66s 0.774 0.784 -3.189 -3.162
f66u 0.919 0.891 -0.88 -1.148
Code
RIpcmPCA(df.pos)
PCA of Rasch model residuals
Eigenvalues
1.68
1.25
1.14
1.02
0.91
Code
RIloadLoc(df.pos)

Code
RIresidcorr(df.pos, cutoff = 0.2)
f66h f66l f66m f66p f66s f66u
f66h
f66l -0.07
f66m -0.09 -0.27
f66p -0.09 -0.24 -0.07
f66s 0.02 0.19 -0.17 -0.16
f66u -0.17 -0.2 -0.06 0.06 -0.15
Note:
Relative cut-off value (highlighted in red) is 0.101, which is 0.2 above the average correlation.
Code
RItargeting(df.pos)

Code
RIitemHierarchy(df.pos)

Code
plot(mirt.rasch, type="trace")

Item f66s behöver tas bort p.g.a. residualkorrelation med f66l och klart sämre item fit än l.

2.11.1 Omkodning av svarskategorier för f66p

Eftersom svarskategorierna är oordnade slår vi samman de två mittersta. Test visade att de två översta inte kunde slås samman.

Code
df.pos$f66p<-recode(df.pos$f66p,"2=1;3=2", as.factor = F)

df.erm <- PCM(df.pos)
plotICC(df.erm, item.subset = "f66p")

2.12 Rasch-analys 2 positiva items

(f66s borttagen, f66p omkodad)

Item f66s behöver tas bort p.g.a. residualkorrelation med f66l och klart sämre item fit än l.

Code
df.pos$f66s <- NULL
RIlistItemsMargin(df.pos, 13)
itemnr item
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66p Det är fel att fuska i skolan.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
RIitemfitPCM2(df.pos, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66h 0.78 0.776 -3.398 -3.483
f66l 1.005 0.984 -0.012 -0.233
f66m 0.894 0.881 -1.408 -1.478
f66p 0.811 0.813 -2.32 -2.952
f66u 0.825 0.807 -2.055 -2.564
Code
RIpcmPCA(df.pos)
PCA of Rasch model residuals
Eigenvalues
1.49
1.29
1.20
1.02
0.00
Code
RIloadLoc(df.pos)

Code
RIresidcorr(df.pos, cutoff = 0.2)
f66h f66l f66m f66p f66u
f66h
f66l -0.04
f66m -0.09 -0.26
f66p 0 -0.15 -0.02
f66u -0.15 -0.18 -0.07 0.11
Note:
Relative cut-off value (highlighted in red) is 0.114, which is 0.2 above the average correlation.
Code
RItargeting(df.pos)

Code
RIitemHierarchy(df.pos)

2.13 Invarians/DIF - positiva items

2.13.1 Kön

Code
RIlistItemsMargin(df.pos)
itemnr item
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66p Det är fel att fuska i skolan.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
#dif.gender<-recode(dif.gender,"'Pojke'=1;'Flicka'=2",as.factor=FALSE)
RIdifTable(df.pos, dif.gender)

Item 2 3 Mean location StDev MaxDiff
f66h -0.590 -0.341 -0.466 0.176 0.249
f66l -0.370 -0.042 -0.206 0.232 0.329
f66m 0.006 -0.085 -0.040 0.064 0.091
f66p 0.623 0.228 0.426 0.279 0.395
f66u 0.332 0.239 0.285 0.066 0.093
Code
RIdifFigure(df.pos, dif.gender)

Items f66l och p har något hög DIF, men ej över gränsvärde 0.5.

2.13.2 Årskurs

Code
RIlistItemsMargin(df.pos)
itemnr item
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66p Det är fel att fuska i skolan.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
RIdifTable(df.pos, dif.arskurs)

Item 2 3 Mean location StDev MaxDiff
f66h -0.504 -0.438 -0.471 0.047 0.066
f66l -0.135 -0.292 -0.214 0.111 0.156
f66m -0.054 -0.015 -0.034 0.027 0.039
f66p 0.395 0.454 0.425 0.042 0.059
f66u 0.297 0.290 0.294 0.005 0.007
Code
RIdifFigure(df.pos, dif.arskurs)

Inga problem.

2.13.3 Årtal

Code
final.items.pos <- names(df.pos)
#write.csv(final.items, file = "2022-09-16 IFoptimalItems.csv")
df.dif.years.pos <- df.dif.years %>% 
  select(any_of(final.items.pos))

df.dif.years.pos$f66p<-recode(df.dif.years.pos$f66p,"2=1;3=2", as.factor = F)

RIdifTable(df.dif.years.pos, dif.year)

Item 4 6 7 9 10 13 14 15 Mean location StDev MaxDiff
f66h -0.491 -0.408 -0.404 -0.419 -0.468 -0.430 -0.428 -0.337 -0.423 0.046 0.154
f66l -0.023 -0.059 -0.069 -0.176 -0.221 -0.257 -0.304 -0.317 -0.178 0.116 0.294
f66m -0.156 -0.145 -0.096 -0.064 -0.032 0.037 0.103 0.074 -0.035 0.098 0.259
f66p 0.373 0.390 0.360 0.361 0.428 0.390 0.360 0.334 0.375 0.028 0.094
f66u 0.296 0.222 0.208 0.297 0.293 0.260 0.268 0.245 0.261 0.034 0.089
Code
RIdifFigure(df.dif.years.pos, dif.year)

Code
RIdifFigTime(df.dif.years.pos, dif.year)

Inget item uppvisar problematisk nivå av DIF.

2.14 Person fit positiva items

Code
RIpfit(df.pos)

2.15 Reliabilitet positiva items

Code
RItif(df.pos)

2.16 Item-parametrar positiva items

Code
RIitemparams(df.dif.years.pos, "IFpositivaItems.csv")
Threshold 1 Threshold 2 Threshold 3 Item location
f66h -1.15 0.32 0.65 -0.06
f66l -1.11 0.28 1.39 0.19
f66m -0.87 0.71 1.11 0.32
f66p -0.06 1.52 NA 0.73
f66u -0.27 0.90 1.22 0.62
Code
itemlabels %>% 
  filter(itemnr %in% names(df.dif.years.pos)) %>% 
  write_csv("IFposItemnr.csv")
Code
RIscoreSE(df.dif.years.pos)
Ordinal sum score Logit score Logit std.error
0 -3.15 NA
1 -2.27 1.06
2 -1.46 0.79
3 -0.94 0.67
4 -0.53 0.60
5 -0.20 0.56
6 0.10 0.54
7 0.39 0.53
8 0.66 0.53
9 0.94 0.54
10 1.25 0.57
11 1.60 0.63
12 2.06 0.74
13 2.80 1.02
14 3.60 NA

2.17 Analys av delskalor

De 21 frågor som ingår under rubriken “Individfaktorer” har delats in i sju delskalor med tre items vardera.

  • Trotsighet (f66a,f66g,f66o)
  • Spänningssökande - (f66b,f66j,f66n)
  • Aggressivitet - (f66c,f66e,f66t)
  • Antisocialt beteende - (f66d,f66f,f66k)
  • Problemlösning - (f66h,f66l,f66s)
  • Impulsivitet - (f66i,f66m,f66r)
  • Moral - (f66p,f66q,f66u)
Code
# create vectors with items for each subscale
Trotsighet <- as.character(expression(f66a,f66g,f66o))
Spänningssökande <- as.character(expression(f66b,f66j,f66n))
Aggressivitet <- as.character(expression(f66c,f66e,f66t))
Antisocialt <- as.character(expression(f66d,f66f,f66k))
Problemlösning <- as.character(expression(f66h,f66l,f66s))
Impulsivitet <- as.character(expression(f66i,f66m,f66r))
Moral <- as.character(expression(f66p,f66q,f66u))

2.17.1 Trotsighet

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Trotsighet))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
Code
RIitemfitPCM2(df.subskala, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66a 0.716 0.687 -3.05 -3.671
f66g 0.826 0.825 -2.217 -2.061
f66o 0.696 0.686 -3.305 -3.664
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.6
1.4
0.0
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66a f66g f66o
f66a
f66g -0.34
f66o -0.26 -0.44
Note:
Relative cut-off value (highlighted in red) is -0.143, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66a Jag gör tvärt emot vad människor säger åt mig att göra, bara för att göra dem arga.
f66g Jag struntar i regler som hindrar mig från att göra det jag vill göra.
f66o Jag vill gärna se hur långt jag kan gå innan folk får nog.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.17.2 Spänningssökande

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Spänningssökande))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66b Jag gillar att göra spännande och farliga saker, även om det är förbjudet.
f66j Jag vill gärna vara där det händer spännande saker.
f66n Jag gör dumma saker även om de är lite farliga.
Code
RIitemfitPCM2(df.subskala, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66b 0.558 0.552 -5.631 -6.533
f66j 0.929 0.885 -0.739 -1.197
f66n 0.624 0.612 -4.482 -5.606
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.67
1.30
0.03
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66b f66j f66n
f66b
f66j -0.42
f66n -0.16 -0.5
Note:
Relative cut-off value (highlighted in red) is -0.159, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66b Jag gillar att göra spännande och farliga saker, även om det är förbjudet.
f66j Jag vill gärna vara där det händer spännande saker.
f66n Jag gör dumma saker även om de är lite farliga.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.17.3 Aggressivitet

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Aggressivitet))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66t Den som gör mig arg ger jag mig på, även om han/hon inte slagit mig först.
Code
RIitemfitPCM2(df.subskala, 400, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66c 0.764 0.772 -3.059 -3.148
f66e 0.78 0.823 -2.627 -2.404
f66t 0.597 0.602 -3.544 -4.481
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.80
1.18
0.02
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66c f66e f66t
f66c
f66e -0.55
f66t -0.02 -0.41
Note:
Relative cut-off value (highlighted in red) is -0.125, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66c Jag tål inte att bli provocerad, då kan jag slå till någon.
f66e Om jag blir arg på någon drar jag mig inte för att skada honom/henne.
f66t Den som gör mig arg ger jag mig på, även om han/hon inte slagit mig först.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.17.4 Antisocialt beteende

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Antisocialt))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66k Jag kan få andra att tro på nästan vad som helst.
Code
RIitemfitPCM2(df.subskala, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66d 0.686 0.684 -4.098 -4.478
f66f 0.823 0.821 -1.94 -2.505
f66k 0.746 0.752 -3.611 -3.447
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.63
1.37
0.00
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66d f66f f66k
f66d
f66f -0.28
f66k -0.09 -0.34
Note:
Relative cut-off value (highlighted in red) is -0.037, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66d Jag ljuger för att få fördelar eller slippa göra jobbiga saker.
f66f Jag är ofta ute på natten tillsammans med kamrater.
f66k Jag kan få andra att tro på nästan vad som helst.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.17.5 Problemlösning

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Problemlösning))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66s Om jag ställs inför en svår uppgift så väljer jag att göra något annat.
Code
RIitemfitPCM2(df.subskala, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66h 0.812 0.804 -2.497 -3.148
f66l 0.76 0.758 -3.305 -3.258
f66s 0.636 0.628 -5.464 -5.29
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.66
1.34
0.00
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66h f66l f66s
f66h
f66l -0.38
f66s -0.24 -0.08
Note:
Relative cut-off value (highlighted in red) is -0.031, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66h Jag tycker det är roligt att lösa svåra problem och uppgifter.
f66l Jag blir ofta osäker när jag ställs inför nya uppgifter.
f66s Om jag ställs inför en svår uppgift så väljer jag att göra något annat.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.17.6 Impulsivitet

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Impulsivitet))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66i Jag ser mig själv som en ganska impulsiv person.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
RIitemfitPCM2(df.subskala, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66i 0.755 0.747 -3.514 -3.811
f66m 0.817 0.803 -2.527 -2.636
f66r 0.644 0.641 -5.217 -5.372
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.57
1.42
0.01
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66i f66m f66r
f66i
f66m -0.3
f66r -0.1 -0.18
Note:
Relative cut-off value (highlighted in red) is 0.006, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66i Jag ser mig själv som en ganska impulsiv person.
f66m Jag tänker oftast efter innan jag talar eller gör saker.
f66r Det händer att jag gör saker utan att tänka mig för.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.17.7 Moral

Code
# subset items to dataframe
df.subskala <- df.omit.na %>% 
  select(all_of(Moral))
Code
RIlistItemsMargin(df.subskala, 13)
itemnr item
f66p Det är fel att fuska i skolan.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
RIitemfitPCM2(df.subskala, 300, 32, 8)
OutfitMSQ InfitMSQ OutfitZSTD InfitZSTD
f66p 0.628 0.654 -4.138 -4.659
f66q 0.755 0.8 -1.958 -1.993
f66u 0.757 0.776 -2.912 -2.789
Code
RIpcmPCA(df.subskala)
PCA of Rasch model residuals
Eigenvalues
1.59
1.39
0.01
Code
RIloadLoc(df.subskala)

Code
RIresidcorr(df.subskala, cutoff = 0.2)
f66p f66q f66u
f66p
f66q -0.2
f66u -0.19 -0.21
Note:
Relative cut-off value (highlighted in red) is -0.002, which is 0.2 above the average correlation.
Code
RItargeting(df.subskala)

Code
RIitemHierarchy(df.subskala)

Code
plot(mirt.rasch, type="trace")

Code
RIlistitems(df.subskala)
itemnr item
f66p Det är fel att fuska i skolan.
f66q Jag tycker att det är OK att ta något utan att fråga, om man inte blir upptäckt.
f66u Det är viktigt att vara ärlig mot föräldrarna, även om de blir arga.
Code
RItif(df.subskala)

Code
RIpfit(df.subskala)

2.18 Delskalor - sammanfattande kommentar

Alla delskalor har flera items som uppvisar låg item fit, vilket innebär att svaren är för förutsägbara tillsammans med övriga frågor. Det vill säga att de tillför relativt lite information.

All delskalor uppvisar också låg reliabilitet.

2.19 Programvara som använts

Code
pkgs <- cite_packages(cite.tidyverse = TRUE, 
                      output = "table",
                      bib.file = "grateful-refs.bib",
                      include.RStudio = TRUE)
formattable(pkgs, 
            table.attr = 'class=\"table table-striped\" style="font-size: 15px; font-family: Lato; width: 80%"')
Package Version Citation
arrow 10.0.0 Richardson et al. (2022)
base 4.2.2 R Core Team (2022)
car 3.1.1 Fox and Weisberg (2019)
cowplot 1.1.1 Wilke (2020)
eRm 1.0.2 Mair and Hatzinger (2007b); Mair and Hatzinger (2007a); Hatzinger and Rusch (2009); Rusch, Maier, and Hatzinger (2013); Koller, Maier, and Hatzinger (2015); Debelak and Koller (2019); Mair, Hatzinger, and Maier (2021)
foreach 1.5.2 Microsoft and Weston (2022)
formattable 0.2.1 Ren and Russell (2021)
ggrepel 0.9.2 Slowikowski (2022)
glue 1.6.2 Hester and Bryan (2022)
grateful 0.1.11 Rodríguez-Sánchez, Jackson, and Hutchins (2022)
HH 3.1.49 Heiberger and Holland (2004); Heiberger and Robbins (2014); Heiberger and Holland (2015); Heiberger (2022)
kableExtra 1.3.4 Zhu (2021)
knitr 1.41 Xie (2014); Xie (2015); Xie (2022)
matrixStats 0.63.0 Bengtsson (2022)
mirt 1.37.1 Chalmers (2012)
psych 2.2.9 Revelle (2022)
psychotree 0.16.0 Trepte and Verbeet (2010); Strobl, Wickelmaier, and Zeileis (2011); Strobl, Kopf, and Zeileis (2015); Komboz, Zeileis, and Strobl (2018); Wickelmaier and Zeileis (2018)
reshape 0.8.9 Wickham (2007)
RISEkbmRasch 0.1.8.1 Johansson (2023)
rmarkdown 2.19 Xie, Allaire, and Grolemund (2018); Xie, Dervieux, and Riederer (2020); Allaire et al. (2022)
tidyverse 1.3.2 Wickham et al. (2019)

2.20 Referenser

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, Winston Chang, and Richard Iannone. 2022. Rmarkdown: Dynamic Documents for r. https://github.com/rstudio/rmarkdown.
Bengtsson, Henrik. 2022. matrixStats: Functions That Apply to Rows and Columns of Matrices (and to Vectors). https://CRAN.R-project.org/package=matrixStats.
Chalmers, R. Philip. 2012. mirt: A Multidimensional Item Response Theory Package for the R Environment.” Journal of Statistical Software 48 (6): 1–29. https://doi.org/10.18637/jss.v048.i06.
Debelak, Rudolf, and Ingrid Koller. 2019. Testing the Local Independence Assumption of the Rasch Model With Q3-Based Nonparametric Model Tests.” Applied Psychological Measurement. https://doi.org/10.1177/0146621619835501.
Fox, John, and Sanford Weisberg. 2019. An R Companion to Applied Regression. Third. Thousand Oaks CA: Sage. https://socialsciences.mcmaster.ca/jfox/Books/Companion/.
Hatzinger, Reinhold, and Thomas Rusch. 2009. IRT models with relaxed assumptions in eRm: A manual-like instruction.” Psychology Science Quarterly 51.
Heiberger, Richard M. 2022. HH: Statistical Analysis and Data Display: Heiberger and Holland. https://CRAN.R-project.org/package=HH.
Heiberger, Richard M., and Burt Holland. 2004. Statistical Analysis and Data Display: An Intermediate Course with Examples in S-Plus, R, and SAS. First. Springer-Verlag, New York. https://link.springer.com/book/10.1007/978-1-4757-4284-8.
———. 2015. Statistical Analysis and Data Display: An Intermediate Course with Examples in R. Second. Springer-Verlag, New York. https://link.springer.com/book/10.1007/978-1-4939-2122-5.
Heiberger, Richard M., and Naomi B. Robbins. 2014. “Design of Diverging Stacked Bar Charts for Likert Scales and Other Applications.” Journal of Statistical Software 57 (5): 1–32. https://doi.org/10.18637/jss.v057.i05.
Hester, Jim, and Jennifer Bryan. 2022. Glue: Interpreted String Literals. https://CRAN.R-project.org/package=glue.
Johansson, Magnus. 2023. RISEkbmRasch: Psychometric Analysis in r with Rasch Measurement Theory. https://github.com/pgmj/RISEkbmRasch.
Koller, Ingrid, Marco Johannes Maier, and Reinhold Hatzinger. 2015. An Empirical Power Analysis of Quasi-Exact Tests for the Rasch Model: Measurement Invariance in Small Samples.” Methodology 11. https://doi.org/10.1027/1614-2241/a000090.
Komboz, Basil, Achim Zeileis, and Carolin Strobl. 2018. “Tree-Based Global Model Tests for Polytomous Rasch Models.” Educational and Psychological Measurement 78 (1): 128–66. https://doi.org/10.1177/0013164416664394.
Mair, Patrick, and Reinhold Hatzinger. 2007a. CML based estimation of extended Rasch models with the eRm package in R.” Psychology Science 49.
———. 2007b. Extended Rasch modeling: The eRm package for the application of IRT models in R.” Journal of Statistical Software 20. https://www.jstatsoft.org/v20/i09.
Mair, Patrick, Reinhold Hatzinger, and Marco Johannes Maier. 2021. eRm: Extended Rasch Modeling. https://cran.r-project.org/package=eRm.
Microsoft, and Steve Weston. 2022. Foreach: Provides Foreach Looping Construct. https://CRAN.R-project.org/package=foreach.
R Core Team. 2022. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Ren, Kun, and Kenton Russell. 2021. Formattable: Create ’Formattable’ Data Structures. https://CRAN.R-project.org/package=formattable.
Revelle, William. 2022. Psych: Procedures for Psychological, Psychometric, and Personality Research. Evanston, Illinois: Northwestern University. https://CRAN.R-project.org/package=psych.
Richardson, Neal, Ian Cook, Nic Crane, Dewey Dunnington, Romain François, Jonathan Keane, Dragoș Moldovan-Grünfeld, Jeroen Ooms, and Apache Arrow. 2022. Arrow: Integration to ’Apache’ ’Arrow’. https://CRAN.R-project.org/package=arrow.
Rodríguez-Sánchez, Francisco, Connor P. Jackson, and Shaurita D. Hutchins. 2022. Grateful: Facilitate Citation of r Packages. https://github.com/Pakillo/grateful.
Rusch, Thomas, Marco Johannes Maier, and Reinhold Hatzinger. 2013. Linear logistic models with relaxed assumptions in R.” In Algorithms from and for Nature and Life, edited by Berthold Lausen, Dirk van den Poel, and Alfred Ultsch. Studies in Classification, Data Analysis, and Knowledge Organization. New York: Springer. https://doi.org/10.1007/978-3-319-00035-0_34.
Slowikowski, Kamil. 2022. Ggrepel: Automatically Position Non-Overlapping Text Labels with ’Ggplot2’. https://CRAN.R-project.org/package=ggrepel.
Strobl, Carolin, Julia Kopf, and Achim Zeileis. 2015. “Rasch Trees: A New Method for Detecting Differential Item Functioning in the Rasch Model.” Psychometrika 80 (2): 289–316. https://doi.org/10.1007/s11336-013-9388-3.
Strobl, Carolin, Florian Wickelmaier, and Achim Zeileis. 2011. “Accounting for Individual Differences in Bradley-Terry Models by Means of Recursive Partitioning.” Journal of Educational and Behavioral Statistics 36 (2): 135–53. https://doi.org/10.3102/1076998609359791.
Trepte, Sabine, and Markus Verbeet, eds. 2010. Allgemeinbildung in Deutschland – Erkenntnisse Aus Dem SPIEGEL Studentenpisa-Test. Wiesbaden: VS Verlag.
Wickelmaier, Florian, and Achim Zeileis. 2018. “Using Recursive Partitioning to Account for Parameter Heterogeneity in Multinomial Processing Tree Models.” Behavior Research Methods 50 (3): 1217–33. https://doi.org/10.3758/s13428-017-0937-z.
Wickham, Hadley. 2007. “Reshaping Data with the Reshape Package.” Journal of Statistical Software 21 (12). https://www.jstatsoft.org/v21/i12/.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
Wilke, Claus O. 2020. Cowplot: Streamlined Plot Theme and Plot Annotations for ’Ggplot2’. https://CRAN.R-project.org/package=cowplot.
Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. http://www.crcpress.com/product/isbn/9781466561595.
———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.
———. 2022. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.
Xie, Yihui, J. J. Allaire, and Garrett Grolemund. 2018. R Markdown: The Definitive Guide. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown.
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 2020. R Markdown Cookbook. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown-cookbook.
Zhu, Hao. 2021. kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax. https://CRAN.R-project.org/package=kableExtra.